Structure T> System.Nullable<
Cet article vous offre des remarques complémentaires à la documentation de référence pour cette API.
La Nullable classe représente un type valeur qui peut être affecté null
.
Un type est dit nullable s’il peut être affecté à une valeur ou peut être affecté null
, ce qui signifie que le type n’a aucune valeur. Par défaut, tous les types de référence, tels que String, sont nullables, mais tous les types valeur, tels que Int32, ne sont pas.
Dans C# et Visual Basic, vous marquez un type valeur comme nullable à l’aide de la ?
notation après le type valeur. Par exemple, int?
en C# ou Integer?
en Visual Basic déclare un type de valeur entière qui peut être affecté null
.
La Nullable<T> structure prend en charge l’utilisation d’un type valeur uniquement comme type Nullable, car les types de référence sont nullables par conception.
La Nullable classe fournit une prise en charge complémentaire de la Nullable<T> structure. La Nullable classe prend en charge l’obtention du type sous-jacent d’un type Nullable, ainsi que les opérations de comparaison et d’égalité sur les paires de types nullables dont le type valeur sous-jacent ne prend pas en charge les opérations de comparaison et d’égalité génériques.
Propriétés fondamentales
Les deux membres fondamentaux de la Nullable<T> structure sont les propriétés et Value les HasValue propriétés. Si la HasValue propriété d’un Nullable<T> objet est true
, la valeur de l’objet est accessible avec la Value propriété. Si la HasValue propriété est false
, la valeur de l’objet n’est pas définie et une tentative d’accès à la Value propriété lève un InvalidOperationException.
Boxing et unboxing
Lorsqu’un type Nullable est boxé, le Common Language Runtime boxe automatiquement la valeur sous-jacente de l’objet Nullable<T> , et non l’objet Nullable<T> lui-même. Autrement dit, si la HasValue propriété est true
, le contenu de la Value propriété est boxé. Lorsque la valeur sous-jacente d’un type Nullable n’est pas boxée, le Common Language Runtime crée une structure Nullable<T> initialisée avec la valeur sous-jacente.
Si la HasValue
propriété d’un type nullable est false
, le résultat d’une opération de boxe est null
. Par conséquent, si un type nullable boxed est passé à une méthode qui attend un argument d’objet, cette méthode doit être préparée pour gérer le cas où l’argument est null
. Lorsqu’il null
est nonboxé dans un type Nullable, le Common Language Runtime crée une nouvelle Nullable<T> structure et initialise sa HasValue
propriété sur false
.
Composants Windows Runtime
Vous pouvez inclure un Nullable<T> type en tant que membre d’une structure exportée dans une bibliothèque WinMD.